import openpyxl


class CaseData():
    pass



class Read_Excel(object):



    def __init__(self,file_name,sheet_name):
        '''
        操作excle文件方法
        :param file_name:   文件名称/名称路径
        :param sheet_name:  表单名称
        '''
        self.file_name = file_name
        self.sheet_name = sheet_name


    def open(self):
        '''
        打开文件
        :return:
        '''
        self.wb = openpyxl.load_workbook(self.file_name)
        self.sh = self.wb[self.sheet_name]


    def read_data(self):
        '''
        读取文件
        :return:
        '''
        self.open()

        row = list(self.sh.rows)

        title = []

        for i in row[0]:
            title.append(i.value)

        cases = []
        for data in row[1:]:
            list_data = []
            for j in data:
                list_data.append(j.value)
            case = dict(zip(title,list_data))
            cases.append(case)
        return cases

    # 读取文件方法
    def read_data_obj(self):
        # 打开文件
        self.open()
        # 获取最大行数，并返回一个列表
        rows = list(self.sh.rows)
        # 获取第一行，用作标题
        title = []  # 创建一个列表，用于存放数据
        for i in rows[0]:  # 遍历取出第一行数据
            title.append(i.value)  # 将获取的value存放在title中

        cases = []
        # 遍历剩余的行
        for row in rows[1:]:  # 遍历除了第一行的剩余数据
            data = []
            for j in row:  # 遍历格子中的值
                data.append(j.value)  # 将遍历的值，放在data列表中

            # 将title和data组成一个列表包含字典的数据格式
            case = list(zip(title, data))

            # 创建一个对象，存放数据
            case_obj = CaseData()

            # 遍历用例的数据，存放的对象中
            for k, v in case:
                setattr(case_obj, k, v)
                print(k, v)
            # 将遍历的数据对象，存放在列表中，方便存取
            cases.append(case_obj)

        return cases

    def writ_data(self,row,column,value):
        self.open()
        self.sh.cell(row=row,column=column,value=value)
        self.wb.save(self.file_name)
        self.wb.close()


if __name__ == '__main__':
    import os
    from common.my_path import DATA_PATH
    excel = Read_Excel(DATA_PATH,'login')
    res = excel.read_data()
    print(res)
